ArangoDB-তে Transaction এমন একটি পদ্ধতি যা মাল্টি-ডকুমেন্ট বা মাল্টি-কালেকশন অপারেশন সুনির্দিষ্ট এবং নিরাপদভাবে পরিচালনা করতে সহায়তা করে। AQL-এ Transaction ব্যবহার করে আপনি ডেটা সংশোধন বা আপডেটের সময় ডেটার সঙ্গতি (Consistency) এবং নির্ভুলতা নিশ্চিত করতে পারেন।
Transaction মানে একটি নির্দিষ্ট কার্যক্রমের সেট যা সম্পূর্ণ বা একত্রে ব্যর্থ হয়। এটি ACID (Atomicity, Consistency, Isolation, Durability) বৈশিষ্ট্য মেনে চলে।
যদি একটি Transaction ব্যর্থ হয়, তবে এর প্রতিটি পরিবর্তন রোলব্যাক (Rollback) হয়, অর্থাৎ পূর্বের অবস্থায় ফিরে যায়।
Transaction একটি জাভাস্ক্রিপ্ট অবজেক্টের মাধ্যমে চালানো হয়, যা AQL কোয়েরি ধারণ করে।
Transaction চালানোর আগে কোন Collection গুলোতে কাজ হবে তা নির্ধারণ করতে হয়।
Transaction এর মধ্যবর্তী কোয়েরিগুলো একত্রে চালানো হয়।
db._executeTransaction({
collections: {
write: ["Products", "Orders"]
},
action: function () {
const db = require('@arangodb').db;
// Order তৈরি করা
db.Orders.insert({
productId: "12345",
quantity: 2,
status: "Pending"
});
// Product স্টকের সংখ্যা হালনাগাদ করা
db.Products.update("12345", { stock: 10 });
}
});
এখানে:
Products
এবং Orders
কালেকশন Transaction-এর অংশ।db._executeTransaction({
collections: {
read: ["Users"],
write: ["Payments"]
},
action: function () {
const db = require('@arangodb').db;
const query = `
FOR user IN Users
FILTER user.status == 'Active'
INSERT {
userId: user._key,
amount: 100,
status: 'Paid'
} INTO Payments
`;
db._query(query);
}
});
এখানে:
Users
থেকে ডেটা পড়া।Payments
এ নতুন ডেটা যোগ করা।db._executeTransaction({
collections: {
write: ["Accounts", "Transactions"]
},
action: function () {
const db = require('@arangodb').db;
// Accounts থেকে টাকা ডেবিট করা
db.Accounts.update("account1", { balance: db.Accounts.document("account1").balance - 500 });
// Accounts এ টাকা ক্রেডিট করা
db.Accounts.update("account2", { balance: db.Accounts.document("account2").balance + 500 });
// Transactions এ লেনদেনের তথ্য সংরক্ষণ
db.Transactions.insert({
from: "account1",
to: "account2",
amount: 500,
status: "Success"
});
}
});
Transaction এর সময় যদি কোনো ত্রুটি ঘটে, তাহলে এটি একটি Rollback ট্রিগার করে, এবং সমস্ত পরিবর্তন পূর্বের অবস্থায় ফিরে যায়।
try {
db._executeTransaction({
collections: { write: ["Orders"] },
action: function () {
const db = require('@arangodb').db;
db.Orders.insert({ orderId: "123", status: "Pending" });
throw "Manual Error"; // ইচ্ছাকৃত ত্রুটি
}
});
} catch (err) {
console.error("Transaction ব্যর্থ হয়েছে:", err);
}
AQL-এ Transaction ব্যবহার বড় এবং জটিল ডেটাবেজ অপারেশনের সময় ডেটার সঙ্গতি এবং নির্ভুলতা নিশ্চিত করে। এটি ACID বৈশিষ্ট্য মেনে চলে এবং ডেভেলপারদের ডেটা ম্যানেজমেন্ট আরও সহজ এবং নির্ভরযোগ্য করে তোলে। ArangoDB-তে Transaction ব্যবহার করে আপনি নিরাপদ এবং কার্যকর ডেটাবেজ অপারেশন করতে পারবেন।
common.read_more